# 函数参数一共有以下几种:
"""
1. 必填参数
2. 默认参数
3. 不定长参数
"""
def stu_info(name, age, class_name='1205'):
    print(name, age, class_name)

# 调用
# stu_info('刘梦秋')   # name, age为必填项
stu_info('郑煬煜', 24)  # calss_name有默认值
stu_info('渣渣辉', 19, '999')  # class_name可以填写
print('==' * 20)
# 不定长参数
# 和函数的定义和调用都有关系
"""
定义：
位置参数： *arg
关键字参数：*kwargs
调用：
传入任意多个位置参数
传入任意多个关键字参数
"""

# 位置不定长参数
# TODO *args:  函数调用时可以传入任意多个位置参数,打包为一个元组
# 定义:
"""
*args:  函数调用时可以传入任意多个位置参数,打包为一个元组
"""
def fn1(*args):
    pass
# 调用
# fn1(val1, val2, val3, ...)

# 例:
# 定义:
def fn2(*args):
    print(args, type(args))
# 调用:
fn2(1, 2, 3, 4)

# 关键字不定长参数
# TODO **kwargs  函数调用时可以传入任意多个关键字参数,打包为一个字典
# 定义:
def fn3(**kwargs):
    print(kwargs, type(kwargs))
# 调用:
fn3(a=3, b=2, c=1)

